メイン コーダーズルーム【スクリプト系】
ステージ上のムービークリップをMovieClipクラスのサブクラスに変換(?)する | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| Tonpoo (gaienboy改め) | Åê¹ÆNo.35282 投稿日時: 2007-9-27 17:17 |
職人 ![]() ![]() 居住地: 東京・神宮前 投稿: 713
使用環境:
Windows Vista SP1, Flash CS3 Pro,Flash Player 10.0.22.87 |
ステージ上のムービークリップをMovieClipクラスのサブクラスに変換(?)する こんにちは、gaienboyです。
ステージ上に配置してあるムービークリップを、カスタムクラス(MovieClipクラスの サブクラス)として扱う方法について躓いています。以下、ちょっと長文になります。 ※追記:ActionScript2.0で開発しています ヘルプ「ActionScript 2.0 の学習」の「継承>継承について」で、下記の記述がありました。 引用: サブクラスは、"スーパークラス" のすべてのプロパティとメソッドを継承します。 そこで、TestClassというクラスと、その拡張であるSubTestClassというクラスを作って 検証し、SubTestClassからTestClassのインスタンスメソッドが使えることを確認しました。 TestClass.asの記述 SubTestClass.asの記述 Flaファイルの記述 これで、サブクラスからスーパークラスのメソッドが呼び出せていることを確認しました。 次に、MovieClipクラスのサブクラスを作りました。 SubMovieClip.asの記述 そして、ステージ上に配置してあるムービークリップ「bar_mc」をSubMovieClip クラスに変換(?)して、SubMovieClipクラスのインスタンスメソッドと、 スーパークラスであるMovieClipクラスのプロパティを呼び出してみようと考えました。 トライ1: bar_mcがステージ上のbar_mcを参照していないため(?)、 bar_mcの_xプロパティを取得できず失敗 トライ2: コンストラクタに渡したbar_mcが宙ぶらりんになっているため(?)、 bar_mcの_xプロパティを取得できず失敗 ライブラリにあるbar_mcシンボルのリンケージで「クラス」にSubMovieClipを 指定したら、SubMovieClipクラスのインスタンスメソッドとMovieClipクラスのプロパティ の両方を扱うことができました。 トライ3: コンストラクタでSubMovieClipインスタンスを作る時に、元となる(?) ムービークリップにSubMovieClipのインスタンスメソッドをコピーしたところ、 bar_mcからSubMovieClipFuncメソッドを呼び出せるようにはなりました。 ただし、myBarから、スーパークラスであるMovieClipクラスのプロパティに アクセスすることはできません。 SubMovieClip.asの記述(変更後) トライ4: トライ3のように、「bar_mc」を指定して、MovieClipクラスのプロパティ・ メソッドも、SubMovieClipクラスのプロパティ・メソッドも両方使えるのが 現在の目標です。これを、「ライブラリのシンボルにクラスをリンケージする」 のではなく、「ステージ上のムービークリップに動的にクラスをリンケージする」 という方法がないものかと思って、悩んでいます。 ヘルプの「ActionScript 2.0 の学習」の「クラス」と「継承」、ならびに 野中先生のテクニカルノート「オブジェクト指向プログラミング」の項目は 目を通したつもりです。が、見落としや勘違いがある可能性も大です(汗)。 クラスの勉強を始めてまだ間もないので、基本的な考え方に問題があるのかも しれないのですが、そのあたりも含め、識者の皆様のご意見・アドバイスを いただけたらと思います。 長文、失礼しました
|
| ニノミヤ カズノリ | Åê¹ÆNo.35284 投稿日時: 2007-9-27 21:09 |
職人 ![]() ![]() 居住地: 東京 投稿: 430
使用環境:
CS4 .4.11, .5.7 XP Pro(sp3)Flash Player 10,0,22,87, AIR 1.5.1, IE 5.5 & 6 & 7 & 8, Firefox 2.0.0.20 & 3.0.11 & 3.5, Opera 9.64, Safari 4, Google Chrome 2.0.172.31, Netscape 7.1 |
Re: ステージ上のムービークリップをMovieClipクラスのサブクラスに変換(?)する 引用:
トライ1: MovieClipをnew演算子にて生成すると、機能しないし、表示もされないというのはご存知でしょうか? トライ1にて_xプロパティを参照しようとしてundefinedだった理由はここにあります。 これらのプロパティは、createEmptyMovieClip等の関数を使用して初めて代入されます。 その為、MovieClipを継承したSubMovieClipをnew演算子にて生成しても、_xプロパティを参照する事はできません。 引用: SubMovieClip.asの記述(変更後) また、トライ4の場合、 bar_mcを拡張したオブジェクトがmyBarに入る訳ではありません。 結局のところ、new演算子によって生成されたSubMovieClipのインスタンスが代入されてしまいます。 この事から、やはり_xプロパティは参照する事ができません。 (といっても、今回の場合myBar.my_mc._xで参照できます) 「ステージ上のムービークリップに動的にクラスをリンケージする」との事ですが、既存の関数では無かったと思います。 (シンボルにクラスを登録するならObject.regiterClassがありますが、今回の場合違いますね。) ちょっと考えてみたんですが、こんなのはどうでしょう。 SubMovieClip.as root やろうとしてる事はSubMovieClip.as(変更後)と同じですが、SubMovieClipのプロパティやメソッドを一括で代入できるので楽かなと |
| 野中文雄 | Åê¹ÆNo.35285 投稿日時: 2007-9-27 21:40 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1) |
Re: ステージ上のムービークリップをMovieClipクラスのサブクラスに変換(?)する ActionScript 1.0スタイルの処理を使う必要があるでしょう。
参考:「ActionScript 2.0と1.0の継承について」 引用: gaienboyさんは書きました: ActionScript 2.0や3.0では、クラスはMovieClipを継承することなく、下記のようにMovieClipインスタンスをインスタンスプロパティとして設定し、インスタンスメソッドでそのMovieClipに対して処理を行うというかたちになるのではないかと思います。 その中間として、mix-inの手法も選択肢としてはありえます。 引用: コンストラクタでSubMovieClipインスタンスを作る時に、元となる(?) |
| Tonpoo (gaienboy改め) | Åê¹ÆNo.35292 投稿日時: 2007-9-28 0:45 |
職人 ![]() ![]() 居住地: 東京・神宮前 投稿: 713
使用環境:
Windows Vista SP1, Flash CS3 Pro,Flash Player 10.0.22.87 |
Re: ステージ上のムービークリップをMovieClipクラスのサブクラスに変換(?)する こんばんは、gaienboyです。ニノミヤさん、レスありがとうございました!
引用: ニノミヤ カズノリさんは書きました: そうか!!AS2.0までのMovieClipに、new演算子で生成するためのコンストラクタメソッドが 無いということは、ついこの間セミナーでも学んだのですが、故にその拡張であるSubMovieClip クラスも、new演算子で生成しても、スーパークラスであるMovieClipのインスタンスプロパティや メソッドを持ってこれるわけではないんですね。「MovieClipクラスにはコンストラクタメソッドが ないのに、どうやってsuper(mc)みたいにすればいいのだろう?」って思っていたんです。 引用: (といっても、今回の場合myBar.my_mc._xで参照できます) ああ、これも目からウロコでした。そうか、「myBar.my_mc」でいけるんですね。 引用: 「ステージ上のムービークリップに動的にクラスをリンケージする」との事ですが、既存の関数では無かったと思います。 ふむふむ。「Object.regiterClass」も未見でした。ヘルプをざっと(ホントに「ざっと」)見て 見たのですが、あとでまた改めてじっくり読んでみます。 引用: ちょっと考えてみたんですが、こんなのはどうでしょう。 「__proto__」と「prototype」を使うやり方!上記の野中先生の投稿中にもある、 AS1.0形式の方法ですね。なるほど、こんなやり方もあるのか! 参考にさせていただきます!
|
| Tonpoo (gaienboy改め) | Åê¹ÆNo.35294 投稿日時: 2007-9-28 5:29 |
職人 ![]() ![]() 居住地: 東京・神宮前 投稿: 713
使用環境:
Windows Vista SP1, Flash CS3 Pro,Flash Player 10.0.22.87 |
Re: ステージ上のムービークリップをMovieClipクラスのサブクラスに変換(?)する こんばんは、gaienboyです。野中先生、レスをありがとうございました!!
引用: 野中文雄さんは書きました: テクニカルノート、拝見しました。そして、やはり読み落としていました・・・(汗)。 引用: ActionScript 2.0や3.0では、クラスはMovieClipを継承することなく、下記のようにMovieClipインスタンスをインスタンスプロパティとして設定し、インスタンスメソッドでそのMovieClipに対して処理を行うというかたちになるのではないかと思います。 なるほど。今までの考え方を変える必要がありますね。 引用: その中間として、mix-inの手法も選択肢としてはありえます。 リンク先、早速訪問しました。・・・が、まだ読み終えていません(汗)。 頑張って読んで身に付けます
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン


Windows Vista SP1,
Flash CS3 Pro,
Tonpoo (a.k.a. gaienboy)
.4.11, 



